Traits: Composable Units of Behaviour